package com.zkthink.ceres.order.dao;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.zkthink.base.mapper.SuperMapper;
import com.zkthink.ceres.order.dto.comment.AdminQueryCommentDTO;
import com.zkthink.ceres.order.dto.comment.CommentDTO;
import com.zkthink.ceres.order.dto.comment.QueryProductOrStoreCommentDTO;
import com.zkthink.ceres.order.entity.Comment;

import com.zkthink.ceres.order.vo.comment.CommentKeywordVO;
import com.zkthink.ceres.order.vo.comment.MyCommentVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * 评价表
 * </p>
 *
 * @author JustArgo
 * @date 2020-07-12
 */
@Repository
public interface CommentMapper extends SuperMapper<Comment> {
    @Select("select id from  ceres_comment where chlorder_id = #{chlorderId} and mid = #{mid}")
    Comment findByChlorderId(@Param("chlorderId") Long chlorderId, @Param("mid") Long mid);

    /**
     * 平台查询评论列表
     *
     * @param dto
     * @return
     */
    @SqlParser(filter = true)
    List<CommentDTO> findAdminCommentList(AdminQueryCommentDTO dto);

    /**
     * 平台查询评论总数
     *
     * @param dto
     * @return
     */
    @SqlParser(filter = true)
    Integer findAdminCommentListCount(AdminQueryCommentDTO dto);

    /**
     * 根据条件查询评论列表
     *
     * @param queryCommentDTO
     * @return
     */
    List<Comment> selectListByCondition(QueryProductOrStoreCommentDTO queryCommentDTO);

    /**
     * 根据条件查询评论个数
     *
     * @param queryCommentDTO
     * @return
     */
    Integer selectCountByCondition(QueryProductOrStoreCommentDTO queryCommentDTO);

    /**
     * 增加点赞量
     *
     * @param id
     */
    void increaseLikeNum(Long id);

    /**
     * 减少点赞量
     *
     * @param id
     */
    void decreaseLikeNum(Long id);

    /**
     * 查询评论量排前10的关键词
     *
     * @param queryCommentDTO
     * @return
     */
    List<CommentKeywordVO> selectTopKeywordList(QueryProductOrStoreCommentDTO queryCommentDTO);

    /**
     * 我的评价
     */
    List<MyCommentVo> mycomment(Long mid);

    @Update("update ceres_comment set is_delete=1 where id = #{id}")
    int updateDelect(Long id);
}
